MySQL het INSERT statement
Met het INSERT statement kan je een rij in de tabel en de data voor de kolommen in de tabel toevoegen.
Probleem
Met het INSERT statement kan je één of meerdere rijen toevoegen.
Oplossing
Het is een goed idee om met een 'stub' te beginnen, een 'skelet' statement:
insert into Boeken ( ) values ( );
We beginnen met de syntax om een rij toe te voegen met alleen de voornaam:
Oefening
-- JI -- 13 november 2012 -- Werken met INSERT -- Bestandsnaam: BoekenInsertVoornaam.sql use JefInghelbrecht; into Boeken( Voornaam ) values( 'Aurelius' );
We krijgen de volgende foutmelding:
Cannot insert the value NULL into column 'Familienaam', table 'A88586JefInghelbrecht.dbo.Boeken'; column does not allow nulls. INSERT fails.
Wat wil die fout zeggen? We kunnen geen rij toevoegen omdat we een not null constraint aan de kolom Familienaam
hebben toegevoegd. Dat wil zeggen dat we verplicht zijn om de Familienaam mee te geven:
-- JI -- 13 november 2012 -- Werken met INSERT -- Bestandsnaam: BoekenInsertVoornaamFamilienaam.sql use JefInghelbrecht; insert into Boeken( Voornaam, Familienaam ) values( 'Aurelius', 'Augustinus' );
Je kan nakijken of de rij wel degelijk is toegevoegd met het statement. Selecteer alle kolommen (*) van de tabel Boeken:
select * from Boeken;
Om alle kolommen in één keer toe te voegen:
-- JI -- 13 november 2012 -- Werken met INSERT -- Bestandsnaam: BoekenInsertAureliusAugustinus.sql use JefInghelbrecht; insert into Boeken( Voornaam, Familienaam, Titel, Stad, Uitgeverij, Verschijningsjaar, Herdruk, Commentaar, Category, InsertedBy ) values ( 'Aurelius', 'Augustinus', 'De stad van God', 'Baarn', 'Uitgeverij Baarn', '1983', '1992', 'Nog te lezen', 'Theologie', 'Jef Inghelbrecht' );
Let erop dat het INSERT statement een hele rij in één keer toevoegt aan de tabel. Het INSERT statement bevat twee lijsten met waarden die door een komma worden gescheiden en die tussen de ronde haakjes staan. De eerste lijst bevat de namen van de kolommen in de nieuwe rij waarin de constanten uit de tweede rij als waarden in de kolommen uit de eerste rij zullen worden geplaatst. De volgorde van beide rijen moet identiek zijn. D.w.z. dat de eerste constante uit de tweede rij in de eerste kolom van de eerste rij geplaatst zal worden.
De constanten in het rood worden ingesloten door twee enkele aanhalingstekens. Daarmee geven we aan dat het strings of tekenreeksen zijn. De eerste constante de zwarte 1 is integer en hoeft niet tussen enkele aanhalingstekens te staan. Over SQL gegevenstypes leren we later meer.
Nog een voorbeeld:
-- JI -- 13 november 2012 -- Werken met INSERT -- Bestandsnaam: BoekenInsertAlfredDenker.sql use ModernWays; insert into Boeken( Voornaam, Familienaam, Titel, Uitgeverij, Verschijningsjaar, InsertedBy ) values ( 'Alfred', 'Denker', 'Onderweg in Zijn en Tijd', 'Damon', '2017', 'Jef Inghelbrecht' );
Opdracht
Maak een script om 1 boek naar keuze (ga kijken op amazon of de standaardboekwinkel) in de tabel te inserten en bewaar onder de naam BoekenInsertMijnBoek.sql
.